# 质数: 约束只有1和他本身的数  53   59

p = 53
q = 59

n = p*q    # 3127

fai = (p-1)*(q-1)   # 欧拉函数    # 3016

e = 3

# 乘法逆元d   用到了欧几里得算法
d = 2011
# (e * d) mod fai(n) = 1


# 公钥  e n   私钥 d n

# 加密过程  c = (m^e) mod n
# 解密过程  m = (c^d) mod n

# 定义一个密文
m = 87
# 加密过程
c = (m**e) % n
# 解密过程
m = (c**d) % n

print(c, m)

'''
为什么RSA加密算法解密不了呢？
两个质数算个乘法很容易
一个大整数，拆成两个质数，很难。  大数拆分很难。   通过e 得知d  n是公开，就得知道fai  知道fai就得知道 p和q， 破解了只能说明破解了这对秘钥。
破解了，可以生成一个新的秘钥。
'''


# 算法导论